Dense লেয়ার ব্যবহার করে Simple Neural Network তৈরি

Machine Learning - কেরাস ডিপ লার্নিং (Deep Learning with Keras) - Keras তে বেসিক Neural Network তৈরি
273

Dense লেয়ার (Fully Connected Layer) হল নিউরাল নেটওয়ার্কের সবচেয়ে সাধারণ এবং ব্যাপকভাবে ব্যবহৃত লেয়ার। একটি Dense লেয়ার প্রতিটি ইনপুটকে প্রতিটি আউটপুটের সাথে সংযোগ স্থাপন করে। এই লেয়ারে প্রতিটি নোড (নিউরন) একটি এক্টিভেশন ফাংশনের মাধ্যমে তার আউটপুট বের করে।

এখন, আমরা Keras ব্যবহার করে একটি Simple Neural Network তৈরি করব, যাতে একটি Dense লেয়ার ব্যবহার করা হবে। আমাদের এই উদাহরণে, আমরা MNIST ডেটাসেট ব্যবহার করব, যা হস্তাক্ষরের সংখ্যা চিহ্নিত করতে ব্যবহৃত হয়।

Keras এ Simple Neural Network তৈরি

  1. প্রথমে প্রয়োজনীয় লাইব্রেরি ইনস্টল করা:

    আপনি যদি Keras এবং TensorFlow ইনস্টল না করে থাকেন, তাহলে এটি ইনস্টল করতে হবে:

    pip install tensorflow
    
  2. কোড উদাহরণ:

    import tensorflow as tf
    from tensorflow.keras.models import Sequential
    from tensorflow.keras.layers import Dense
    from tensorflow.keras.datasets import mnist
    from tensorflow.keras.utils import to_categorical
    
    # MNIST ডেটাসেট লোড করা
    (x_train, y_train), (x_test, y_test) = mnist.load_data()
    
    # ডেটা প্রিপ্রসেসিং: ইনপুট ডেটাকে নর্মালাইজ করা
    x_train = x_train.reshape((x_train.shape[0], 28 * 28)).astype('float32') / 255
    x_test = x_test.reshape((x_test.shape[0], 28 * 28)).astype('float32') / 255
    
    # আউটপুট লেবেলকে ক্যাটেগরিক্যাল আউটপুটে রূপান্তর করা
    y_train = to_categorical(y_train, 10)
    y_test = to_categorical(y_test, 10)
    
    # মডেল তৈরি করা
    model = Sequential()
    
    # Dense লেয়ার যোগ করা (নিউরাল নেটওয়ার্কের প্রথম লেয়ার)
    model.add(Dense(128, input_dim=28*28, activation='relu'))  # 128 নিউরন
    model.add(Dense(10, activation='softmax'))  # আউটপুট লেয়ার, 10 ক্লাস
    
    # মডেল কম্পাইল করা
    model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
    
    # মডেল প্রশিক্ষণ
    model.fit(x_train, y_train, epochs=10, batch_size=32, validation_data=(x_test, y_test))
    
    # মডেল মূল্যায়ন
    loss, accuracy = model.evaluate(x_test, y_test)
    print(f'Loss: {loss}')
    print(f'Accuracy: {accuracy}')
    

ব্যাখ্যা:

  1. ডেটাসেট লোড:
    • mnist.load_data() ফাংশনটি MNIST ডেটাসেট লোড করে, যেখানে x_train এবং x_test ইনপুট ডেটা (ছবি), এবং y_trainy_test তাদের লেবেল (সংখ্যা) থাকে।
  2. ডেটা প্রিপ্রসেসিং:
    • x_train এবং x_test কে 28x28 পিক্সেল এর ২-ডি আউটপুট থেকে ১-ডি আউটপুটে (784 ভ্যালু) রূপান্তর করা হয় এবং নর্মালাইজ করা হয় (০-১ এর মধ্যে আনা)।
    • to_categorical ফাংশনটি আউটপুট লেবেলকে ক্যাটেগরিক্যাল আউটপুটে রূপান্তরিত করে (যেমন, 0-9 সংখ্যাগুলির জন্য One-Hot Encoding)।
  3. Neural Network Model:
    • Sequential() মডেলটি Keras এ একটি সোজা লিনিয়ার স্ট্যাক মডেল তৈরি করতে ব্যবহৃত হয়।
    • Dense(128) প্রথম Dense লেয়ারটি 128 নিউরন ব্যবহার করে এবং input_dim=28*28 দিয়ে ইনপুট ডেটার সাইজ নির্ধারণ করা হয়।
    • activation='relu' রিলু (ReLU) এক্টিভেশন ফাংশনটি প্রথম লেয়ারের জন্য ব্যবহার করা হয়েছে, যা খুবই জনপ্রিয় এবং কার্যকরী।
    • Dense(10) দ্বিতীয় লেয়ারটি আউটপুট লেয়ার, যেখানে 10 নিউরন থাকবে (প্রতিটি 0 থেকে 9 পর্যন্ত একটি সংখ্যা চিহ্নিত করতে)। এখানে activation='softmax' ব্যবহার করা হয়েছে যাতে আউটপুট গুলি একটি সম্ভাবনা বিতরণে রূপান্তরিত হয় (One-Hot Encoding).
  4. মডেল কম্পাইল এবং প্রশিক্ষণ:
    • model.compile(): এখানে loss function হিসেবে categorical_crossentropy এবং optimizer হিসেবে adam ব্যবহার করা হয়েছে। metrics=['accuracy'] দিয়ে মডেলের পারফরম্যান্স পরিমাপ করা হবে।
    • model.fit(): মডেলটি 10 ইপোক (epochs) এর জন্য প্রশিক্ষিত হবে, এবং প্রতি ব্যাচে 32 ইনপুট ডেটা নিয়ে এটি প্রশিক্ষণ চলবে।
  5. মডেল মূল্যায়ন:
    • model.evaluate() ফাংশনটি টেস্ট ডেটাসেটের উপর মডেলের পারফরম্যান্স পর্যালোচনা করবে এবং লস এবং অ্যাকুরেসি দেখাবে।

সারাংশ

এটি ছিল একটি সাধারণ নিউরাল নেটওয়ার্কের উদাহরণ যা Keras এবং Dense লেয়ার ব্যবহার করে তৈরি করা হয়েছে। এখানে আমরা MNIST ডেটাসেট ব্যবহার করেছি এবং নিউরাল নেটওয়ার্কের একটি মৌলিক আর্কিটেকচার তৈরি করেছি, যাতে ইনপুট ডেটা হিসেবে ছবি এবং আউটপুট লেবেল হিসেবে সংখ্যা চিহ্নিত করা হয়।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...